const Koa = require('koa')
const app = new Koa()
const path = require('path')
const logger = require('./middlewares/logger-async')

const session = require('koa-session-minimal')
const MysqlSession = require('koa-mysql-session')

// 配置存储session信息的mysql
let store = new MysqlSession({
  user: 'root',
  password: '123456',
  database: 'my_database',
  host: '127.0.0.1',
})

// 使用session中间件
app.use(session({
  key: 'SESSION_ID',
  store: store
  // ,cookie: cookie
}))

// app.use( async ( ctx ) => {

//   // 设置session
//   if ( ctx.url === '/set' ) {
//     ctx.session = {
//       user_id: Math.random().toString(36).substr(2),
//       count: 0
//     }
//     ctx.body = ctx.session
//   } else if ( ctx.url === '/' ) {

//     // 读取session信息
//     ctx.session.count = ctx.session.count + 1
//     ctx.body = ctx.session
//   } 
// })


// require('./routes/pure/pure-routes')
// app.use(logger)
const bodyParser = require('koa-bodyparser')
app.use(bodyParser()) //在路由前定义

const static = require('koa-static')
app.use(static('./public', {
  index: 'app.html'
}))

const views = require('koa-views')
app.use(views('./views', {
  map: {
    // ejs: 'ejs'
    html: 'ejs'
  },
  // extension: 'ejs' // 如果这里不写扩展名，要在使用的时候写扩展名
}))

const router = require('./routes/koa-router')
app.use(router.routes()).use(router.allowedMethods());

// app.use((context, next) => {
//   context.body = 'hello koa2'
// })

function getSyncTime() {
  return new Promise((resolve, reject) => {
    try {
      let startTime = new Date().getTime()
      setTimeout(() => {
        let endTime = new Date().getTime()
        let data = endTime - startTime
        resolve( data )
      }, 500)
    } catch ( err ) {
      reject( err )
    }
  })
}

// async function getSyncData() {
//   let time = await getSyncTime()
//   let data = `endTime - startTime = ${time}`
//   return data
// }
// async function getData() {
//   let data = await getSyncData()
//   console.log( data )
// }
// getData()

// app.use( async ( ctx ) => {
//   let url = ctx.request.url
//   console.log(url)
//   let html = await route( url )
//   ctx.body = html
// })

app.listen(3333)
